package test.builder;

import lombok.NoArgsConstructor;

/**
 * 调用具体建造者角色以创建产品对象
 */
public class Director {
    /**
     * 创建建造者对象
     */
    private Builder builder;

    /**
     * 构造函数，给定建造者对象
     * @param builder 建造者对象
     */
    public Director(Builder builder) {
        this.builder = builder;
    }

    /**
     * 产品构造方法，在该方法内，调用产品零件建造方法。
     */
    public Product construct(){
        builder.buildPart1();
        builder.buildPart2();
        // 返回builder建造完成的产品对象
        return builder.retrieveResult();
    }
}
